/*
 * mensaje.h
 *
 *  Created on: 09/09/2011
 *      Author: guido
 */

#ifndef MENSAJE_H_
#define MENSAJE_H_
#include "constantes.h"
#include <stdlib.h>
#include <string>

class TerminalesServer;

class Mensaje {
public:
	Mensaje() {}
	/* Guarda en bytes una direccion en heap a un array de char's
	 * Guarda en tamanyo el tamanyo de dicha serializacion */
	virtual void serializar(char* &bytes, int &tamanyo) = 0;

	/* Devuelve el tamanyo que va a tener la cadena de serializacion
	 * de un mensaje. Por cada atributo integer que tenga el mensaje
	 * debe sumarle un WORD_SIZE, y por cada string que tenga, sumara
	 * un WORD_SIZE (para el tamanyo de la cadena) y el tamanyo de la
	 * cadena. Al total se le suma 1 para incluir el caracter identificador*/
	virtual int serialSize() = 0;

	/* Deserializa el contenido de bytes, almacena datos en el mensaje*/
	virtual void deserializar(char* bytes) = 0;
	virtual ~Mensaje() {}
};

#endif /* MENSAJE_H_ */
